<?php

class base
{
    public $channel_code;
    public $channel_id;
    public $timestamp;
    public $callback_url;

    // const OrderSuccess = 3;
    // const OrderFail = 4;

    public $callback_params;
    public $push_order_sn;
    // public $channel_order_sn;

    // public $query_product_url;
    // public $query_balance_url;
    // public $query_order_url;
    // public $submit_order_url;
    // public $api_url;


    public function __construct($setting)
    {
        $this->channel_id = $setting['channel_id'] ?? '';
        $this->channel_code = $setting['channel_code'] ?? "'";
        $this->callback_url = $setting['callback_url'] ?? '';

        // $this->api_url = $setting['api_url'] ?? '';
        // $this->query_order_url = $setting['query_order_url'] ?? '';
        // $this->query_balance_url = $setting['query_balance_url'] ?? '';
        // $this->query_product_url = $setting['query_product_url'] ?? '';
        // $this->submit_order_url = $setting['submit_order_url'] ?? '';

        $this->timestamp = time();
    }
    public function log($str)
    {
        $file_name = $_SERVER['DOCUMENT_ROOT'] . "/../api_resource/logs/" . date('Ymd') . "_pay.log";
        file_put_contents($file_name, date('Y-m-d H:i:s'), FILE_APPEND);
        file_put_contents($file_name, "\r\n", FILE_APPEND);
        file_put_contents($file_name, $str, FILE_APPEND);
        file_put_contents($file_name, "\r\n", FILE_APPEND);
    }

    protected function initCallBackParam()
    {
        // $res = [
        //     'error' => 0,
        //     'order_status' => 2,
        //     'msg' => '充值中',
        //     'params' => is_array($this->callback_params) ? json_encode($this->callback_params) : $this->callback_params,
        //     'code' => 200,
        //     'push_order_sn' => $this->push_order_sn,
        //     'channel_order_sn' => $this->channel_order_sn,
        //     'resp_data' => 'success'
        // ];
        // return $res;
    }



    public function httpRequest($url, $method, $postfields = null, $cookie = '', $refer = '', $headers = array(), $debug = false)
    {
        //header("Content-type:text/html;charset=utf-8");
        $method = strtoupper($method);
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        //        curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0");
        curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36");
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 0); /* 在发起连接前等待的时间，如果设置为0，则无限等待 */
        curl_setopt($ci, CURLOPT_TIMEOUT, 120); /* 设置cURL允许执行的最长秒数 */
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
        switch ($method) {
            case "POST":
                curl_setopt($ci, CURLOPT_POST, true);
                if (!empty($postfields)) {
                    $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
                    curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
                }
                break;
            default:
                curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
                break;
        }
        $ssl = preg_match('/^https:\/\//i', $url) ? TRUE : FALSE;
        curl_setopt($ci, CURLOPT_URL, $url);
        if ($ssl) {
            curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
            curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
        }
        //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
        curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量，这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ci, CURLINFO_HEADER_OUT, true);
        curl_setopt($ci, CURLOPT_COOKIE, $cookie);/* * *COOKIE带过去** */
        //伪造来源referer
        //        curl_setopt ($ci,CURLOPT_REFERER,'http://sb777.cn:8080/tohersystem/rechargeOrder.do?action=distribution&isDistribution=true');
        curl_setopt($ci, CURLOPT_REFERER, $refer);

        $response = curl_exec($ci);
        $requestinfo = curl_getinfo($ci);
        $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
        if ($debug) {
            echo "=====post data======\r\n";
            var_dump($postfields);
            echo "=====info===== \r\n";
            print_r($requestinfo);
            echo "=====response=====\r\n";
            print_r($response);
        }
        curl_close($ci);
        return $response;
    }
}
